Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@microsoft/vscode-azext-azureutils

Package Overview
Dependencies
Maintainers
10
Versions
43
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@microsoft/vscode-azext-azureutils

Common Azure utils for developing Azure extensions for VS Code

  • 0.3.9
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1.3K
decreased by-22.91%
Maintainers
10
Weekly downloads
 
Created
Source

VSCode Azure SDK for Node.js - Azure Utils (Preview)

Build Status

This package provides common Azure utilities for Azure VS Code extensions, and is intented to be used alongside @microsoft/vscode-azext-utils.

Usage

You must call registerAzureUtilsExtensionVariables first in your extension's activate() method. The first parameter of the function passed in will always be an IActionContext, which allows you to specify custom telemetry and describes the behavior of this command. The simplest example is to register a command (in this case, refreshing a node):

registerAzureUtilsExtensionVariables(...);
registerCommand('yourExtension.Refresh', (context: IActionContext, node: AzExtTreeItem) => {
    context.telemetry.properties.customProp = "example prop";
    context.telemetry.measurements.customMeas = 49;
    node.refresh();
});

Azure Extension Tree Data Provider

ExampleTree

Display Azure Resources

Follow these steps to create your basic Azure Tree:

  1. Create an AzExtTreeItem (or AzExtParentTreeItem) describing the items to be displayed under your subscription:

    export class WebAppTreeItem extends AzExtTreeItem {
      public static contextValue: string = "azureWebApp";
      public readonly contextValue: string = WebAppTreeItem.contextValue;
      private readonly _site: Site;
      constructor(parent: AzExtParentTreeItem, site: Site) {
        super(parent);
        this._site = site;
      }
    
      public get id(): string {
        return this._site.id;
      }
    
      public get label(): string {
        return this._site.name;
      }
    }
    
  2. Create a SubscriptionTreeItemBase that provides the tree items you just implemented. It must implement at least hasMoreChildrenImpl and loadMoreChildrenImpl:

    NOTE: Methods suffixed with Impl should not be called directly - just implemented.

    export class SubscriptionTreeItem extends SubscriptionTreeItemBase {
        private _nextLink: string | undefined;
    
        public hasMoreChildrenImpl(): boolean {
            return this._nextLink !== undefined;
        }
    
        public async loadMoreChildrenImpl(clearCache: boolean, _context: IActionContext): Promise<WebAppTreeItem[]> {
            if (clearCache) {
                this._nextLink = undefined;
            }
    
            const client: WebSiteManagementClient = createAzureClient(this.root, WebSiteManagementClient);
            const webAppCollection: WebAppCollection = this._nextLink === undefined ?
                await client.webApps.list() :
                await client.webApps.listNext(this._nextLink);
            this._nextLink = webAppCollection.nextLink;
            return webAppCollection.map((site: Site) => new WebAppTreeItem(this, site)));
        }
    }
    
  3. Create an AzureAccountTreeItemBase that provides the subscriptions you just implemented. It must implement at least createSubscriptionTreeItem:

    export class AzureAccountTreeItem extends AzureAccountTreeItemBase {
      public createSubscriptionTreeItem(root: ISubscriptionContext): SubscriptionTreeItemBase {
        return new SubscriptionTreeItem(this, root);
      }
    }
    
  4. Finally, set up the tree in your extension's activate() method. Instantiate an AzureAccountTreeItem and add it to context.subscriptions since it's a disposable. Then instantiate an AzExtTreeDataProvider, passing in your root tree item and the loadMoreCommandId (which maps the 'Load More...' node to the command registered by your extension).

    const azureAccountTreeItem = new AzureAccountTreeItem();
    context.subscriptions.push(azureAccountTreeItem);
    const treeDataProvider = new AzExtTreeDataProvider(azureAccountTreeItem, "appService.loadMore");
    context.subscriptions.push(vscode.window.createTreeView("azureAppService", { treeDataProvider }));
    

License

MIT

Keywords

FAQs

Package last updated on 22 Mar 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc